Namespace CNG
    Public Class PDV
        Private _CodigoCD As String
        Private _Codigo As System.Nullable(Of Integer)
        Private _Activo As System.Nullable(Of Boolean)
        Private _CodigoTipoPDV As System.Nullable(Of Short)
        Private _Zona As String
        Private _Ruta As String
        Private _IVS As System.Nullable(Of Short)
        Private _NombrePropietario As String
        Private _CiPropietario As String
        Private _CodigoTipoCiExpedidoPropietario As String
        Private _FechaNacimientoPropietario As System.Nullable(Of Date)
        Private _CodigoTipoEstadoCivilPropietario As System.Nullable(Of Short)
        Private _TelefonoPropietario As String
        Private _DireccionPropietario As String
        Private _ReferenciaDireccionPropietario As String
        Private _CodigoTipoRelacionPropietarioVendedor As System.Nullable(Of Short)
        Private _NombreVendedorHabitual As String
        Private _NombreComercial As String
        Private _NitComercial As String
        Private _NombreFacturacion As String
        Private _NitFacturacion As String
        Private _CodigoTipoEstadoPropiedadLocal As System.Nullable(Of Short)
        Private _CodigoTipoNegocio As String
        Private _FechaInicioTrabajoEmpresa As System.Nullable(Of Date)
        Private _TelefonoComercial As String
        Private _DireccionComercial As String
        Private _ReferenciaDireccionComercial As String
        Private _SecuenciaVisitaDistribuidor As System.Nullable(Of Double)
        Private _SecuenciaVisitaPreventista As System.Nullable(Of Double)
        Private _HabilitadoCredito As System.Nullable(Of Boolean)
        Private _CodigoTipoCredito As System.Nullable(Of Short)
        Private _GpsLatitud As System.Nullable(Of Double)
        Private _GpsLongitud As System.Nullable(Of Double)
        Private _GpsAltura As System.Nullable(Of Double)
        Private _GpsDatum As String
        Private _Comentarios As String
        Private _FechaRegistroInsercion As String
        Private _FechaRegistroModificacion As String
        Private _UsuarioRegistroInsercion As String
        Private _UsuarioRegistroModificacion As String

        Public Property CodigoCD() As String
            Get
                Return _CodigoCD
            End Get
            Set(ByVal value As String)
                If _CodigoCD = value Then
                    Return
                End If
                _CodigoCD = value
            End Set
        End Property
        Public Property Codigo() As System.Nullable(Of Integer)
            Get
                Return _Codigo
            End Get
            Set(ByVal value As System.Nullable(Of Integer))

                _Codigo = value
            End Set
        End Property
        Public Property Activo() As System.Nullable(Of Boolean)
            Get
                Return _Activo
            End Get
            Set(ByVal value As System.Nullable(Of Boolean))

                _Activo = value
            End Set
        End Property
        Public Property CodigoTipoPDV() As System.Nullable(Of Short)
            Get
                Return _CodigoTipoPDV
            End Get
            Set(ByVal value As System.Nullable(Of Short))
                _CodigoTipoPDV = value
            End Set
        End Property
        Public Property Zona() As String
            Get
                Return _Zona
            End Get
            Set(ByVal value As String)
                If _Zona = value Then
                    Return
                End If
                _Zona = value
            End Set
        End Property
        Public Property Ruta() As String
            Get
                Return _Ruta
            End Get
            Set(ByVal value As String)
                If _Ruta = value Then
                    Return
                End If
                _Ruta = value
            End Set
        End Property
        Public Property IVS() As System.Nullable(Of Short)
            Get
                Return _IVS
            End Get
            Set(ByVal value As System.Nullable(Of Short))
                _IVS = value
            End Set
        End Property
        Public Property NombrePropietario() As String
            Get
                Return _NombrePropietario
            End Get
            Set(ByVal value As String)
                If _NombrePropietario = value Then
                    Return
                End If
                _NombrePropietario = value
            End Set
        End Property
        Public Property CiPropietario() As String
            Get
                Return _CiPropietario
            End Get
            Set(ByVal value As String)
                If _CiPropietario = value Then
                    Return
                End If
                _CiPropietario = value
            End Set
        End Property
        Public Property CodigoTipoCiExpedidoPropietario() As String
            Get
                Return _CodigoTipoCiExpedidoPropietario
            End Get
            Set(ByVal value As String)
                If _CodigoTipoCiExpedidoPropietario = value Then
                    Return
                End If
                _CodigoTipoCiExpedidoPropietario = value
            End Set
        End Property
        Public Property FechaNacimientoPropietario() As System.Nullable(Of Date)
            Get
                Return _FechaNacimientoPropietario
            End Get
            Set(ByVal value As System.Nullable(Of Date))

                _FechaNacimientoPropietario = value
            End Set
        End Property
        Public Property CodigoTipoEstadoCivilPropietario() As System.Nullable(Of Short)
            Get
                Return _CodigoTipoEstadoCivilPropietario
            End Get
            Set(ByVal value As System.Nullable(Of Short))

                _CodigoTipoEstadoCivilPropietario = value
            End Set
        End Property
        Public Property TelefonoPropietario() As String
            Get
                Return _TelefonoPropietario
            End Get
            Set(ByVal value As String)
                If _TelefonoPropietario = value Then
                    Return
                End If
                _TelefonoPropietario = value
            End Set
        End Property
        Public Property DireccionPropietario() As String
            Get
                Return _DireccionPropietario
            End Get
            Set(ByVal value As String)
                If _DireccionPropietario = value Then
                    Return
                End If
                _DireccionPropietario = value
            End Set
        End Property
        Public Property ReferenciaDireccionPropietario() As String
            Get
                Return _ReferenciaDireccionPropietario
            End Get
            Set(ByVal value As String)
                If _ReferenciaDireccionPropietario = value Then
                    Return
                End If
                _ReferenciaDireccionPropietario = value
            End Set
        End Property
        Public Property CodigoTipoRelacionPropietarioVendedor() As System.Nullable(Of Short)
            Get
                Return _CodigoTipoRelacionPropietarioVendedor
            End Get
            Set(ByVal value As System.Nullable(Of Short))

                _CodigoTipoRelacionPropietarioVendedor = value
            End Set
        End Property
        Public Property NombreVendedorHabitual() As String
            Get
                Return _NombreVendedorHabitual
            End Get
            Set(ByVal value As String)
                If _NombreVendedorHabitual = value Then
                    Return
                End If
                _NombreVendedorHabitual = value
            End Set
        End Property
        Public Property NombreComercial() As String
            Get
                Return _NombreComercial
            End Get
            Set(ByVal value As String)
                If _NombreComercial = value Then
                    Return
                End If
                _NombreComercial = value
            End Set
        End Property
        Public Property NitComercial() As String
            Get
                Return _NitComercial
            End Get
            Set(ByVal value As String)
                If _NitComercial = value Then
                    Return
                End If
                _NitComercial = value
            End Set
        End Property
        Public Property NombreFacturacion() As String
            Get
                Return _NombreFacturacion
            End Get
            Set(ByVal value As String)
                If _NombreFacturacion = value Then
                    Return
                End If
                _NombreFacturacion = value
            End Set
        End Property
        Public Property NitFacturacion() As String
            Get
                Return _NitFacturacion
            End Get
            Set(ByVal value As String)
                If _NitFacturacion = value Then
                    Return
                End If
                _NitFacturacion = value
            End Set
        End Property
        Public Property CodigoTipoEstadoPropiedadLocal() As System.Nullable(Of Short)
            Get
                Return _CodigoTipoEstadoPropiedadLocal
            End Get
            Set(ByVal value As System.Nullable(Of Short))

                _CodigoTipoEstadoPropiedadLocal = value
            End Set
        End Property
        Public Property CodigoTipoNegocio() As String
            Get
                Return _CodigoTipoNegocio
            End Get
            Set(ByVal value As String)
                If _CodigoTipoNegocio = value Then
                    Return
                End If
                _CodigoTipoNegocio = value
            End Set
        End Property
        Public Property FechaInicioTrabajoEmpresa() As System.Nullable(Of Date)
            Get
                Return _FechaInicioTrabajoEmpresa
            End Get
            Set(ByVal value As System.Nullable(Of Date))

                _FechaInicioTrabajoEmpresa = value
            End Set
        End Property
        Public Property TelefonoComercial() As String
            Get
                Return _TelefonoComercial
            End Get
            Set(ByVal value As String)
                If _TelefonoComercial = value Then
                    Return
                End If
                _TelefonoComercial = value
            End Set
        End Property
        Public Property DireccionComercial() As String
            Get
                Return _DireccionComercial
            End Get
            Set(ByVal value As String)
                If _DireccionComercial = value Then
                    Return
                End If
                _DireccionComercial = value
            End Set
        End Property
        Public Property ReferenciaDireccionComercial() As String
            Get
                Return _ReferenciaDireccionComercial
            End Get
            Set(ByVal value As String)
                If _ReferenciaDireccionComercial = value Then
                    Return
                End If
                _ReferenciaDireccionComercial = value
            End Set
        End Property

        Public Property SecuenciaVisitaDistribuidor() As System.Nullable(Of Double)
            Get
                Return _SecuenciaVisitaDistribuidor
            End Get
            Set(ByVal value As System.Nullable(Of Double))

                _SecuenciaVisitaDistribuidor = value
            End Set
        End Property
        Public Property SecuenciaVisitaPreventista() As System.Nullable(Of Double)
            Get
                Return _SecuenciaVisitaPreventista
            End Get
            Set(ByVal value As System.Nullable(Of Double))

                _SecuenciaVisitaPreventista = value
            End Set
        End Property

        Public Property HabilitadoCredito() As System.Nullable(Of Boolean)
            Get
                Return _HabilitadoCredito
            End Get
            Set(ByVal value As System.Nullable(Of Boolean))

                _HabilitadoCredito = value
            End Set
        End Property
        Public Property CodigoTipoCredito() As System.Nullable(Of Short)
            Get
                Return _CodigoTipoCredito
            End Get
            Set(ByVal value As System.Nullable(Of Short))

                _CodigoTipoCredito = value
            End Set
        End Property
        Public Property GpsLatitud() As System.Nullable(Of Double)
            Get
                Return _GpsLatitud
            End Get
            Set(ByVal value As System.Nullable(Of Double))
                _GpsLatitud = value
            End Set
        End Property
        Public Property GpsLongitud() As System.Nullable(Of Double)
            Get
                Return _GpsLongitud
            End Get
            Set(ByVal value As System.Nullable(Of Double))

                _GpsLongitud = value
            End Set
        End Property
        Public Property GpsAltura() As System.Nullable(Of Double)
            Get
                Return _GpsAltura
            End Get
            Set(ByVal value As System.Nullable(Of Double))

                _GpsAltura = value
            End Set
        End Property
        Public Property GpsDatum() As String
            Get
                Return _GpsDatum
            End Get
            Set(ByVal value As String)
                If _GpsDatum = Value Then
                    Return
                End If
                _GpsDatum = Value
            End Set
        End Property
        Public Property Comentarios() As String
            Get
                Return _Comentarios
            End Get
            Set(ByVal value As String)
                If _Comentarios = Value Then
                    Return
                End If
                _Comentarios = Value
            End Set
        End Property
        Public Property FechaRegistroInsercion() As String
            Get
                Return _FechaRegistroInsercion
            End Get
            Set(ByVal value As String)
                If _FechaRegistroInsercion = Value Then
                    Return
                End If
                _FechaRegistroInsercion = Value
            End Set
        End Property
        Public Property FechaRegistroModificacion() As String
            Get
                Return _FechaRegistroModificacion
            End Get
            Set(ByVal value As String)
                If _FechaRegistroModificacion = Value Then
                    Return
                End If
                _FechaRegistroModificacion = Value
            End Set
        End Property
        Public Property UsuarioRegistroInsercion() As String
            Get
                Return _UsuarioRegistroInsercion
            End Get
            Set(ByVal value As String)
                If _UsuarioRegistroInsercion = Value Then
                    Return
                End If
                _UsuarioRegistroInsercion = Value
            End Set
        End Property
        Public Property UsuarioRegistroModificacion() As String
            Get
                Return _UsuarioRegistroModificacion
            End Get
            Set(ByVal value As String)
                If _UsuarioRegistroModificacion = Value Then
                    Return
                End If
                _UsuarioRegistroModificacion = Value
            End Set
        End Property


        Public Shared Function GenerarCodigo(ByVal CodigoCD As String) As Integer

            Dim Comando As New CAD.PDV.PDV_NEW_CODE(CAD.BaseDatos.Conexion)
            Dim Tabla As New DataTable

            Comando.LoadTable(Tabla, CodigoCD)

            Return Tabla.Rows(0).Item("Codigo")

        End Function

        Public Sub Agregar()

            Dim comando As New CAD.PDV.PDV_INSERT(CAD.BaseDatos.Conexion)

            comando.ExecuteNonQuery(CodigoCD, _
            Codigo, _
            Activo, _
            CodigoTipoPDV, _
            Zona, _
            Ruta, _
            IVS, _
            NombrePropietario, _
            CiPropietario, _
            CodigoTipoCiExpedidoPropietario, _
            FechaNacimientoPropietario, _
            CodigoTipoEstadoCivilPropietario, _
            TelefonoPropietario, _
            DireccionPropietario, _
            ReferenciaDireccionPropietario, _
            CodigoTipoRelacionPropietarioVendedor, _
            NombreVendedorHabitual, _
            NombreComercial, _
            NitComercial, _
            NombreFacturacion, _
            NitFacturacion, _
            CodigoTipoEstadoPropiedadLocal, _
            CodigoTipoNegocio, _
            FechaInicioTrabajoEmpresa, _
            TelefonoComercial, _
            DireccionComercial, _
            ReferenciaDireccionComercial, _
            SecuenciaVisitaDistribuidor, _
            SecuenciaVisitaPreventista, _
            HabilitadoCredito, _
            CodigoTipoCredito, _
            GpsLatitud, _
            GpsLongitud, _
            GpsAltura, _
            GpsDatum, _
            Comentarios, _
            UsuarioRegistroInsercion)
        End Sub

        Public Sub Modificar()

            Dim comando As New CAD.PDV.PDV_UPDATE(CAD.BaseDatos.Conexion)
            comando.ExecuteNonQuery(CodigoCD, _
                                    Codigo, _
                                    Activo, _
                                    CodigoTipoPDV, _
                                    Zona, _
                                    Ruta, _
                                    IVS, _
                                    NombrePropietario, _
                                    CiPropietario, _
                                    CodigoTipoCiExpedidoPropietario, _
                                    FechaNacimientoPropietario, _
                                    CodigoTipoEstadoCivilPropietario, _
                                    TelefonoPropietario, _
                                    DireccionPropietario, _
                                    ReferenciaDireccionPropietario, _
                                    CodigoTipoRelacionPropietarioVendedor, _
                                    NombreVendedorHabitual, _
                                    NombreComercial, _
                                    NitComercial, _
                                    NombreFacturacion, _
                                    NitFacturacion, _
                                    CodigoTipoEstadoPropiedadLocal, _
                                    CodigoTipoNegocio, _
                                    FechaInicioTrabajoEmpresa, _
                                    TelefonoComercial, _
                                    DireccionComercial, _
                                    ReferenciaDireccionComercial, _
                                    SecuenciaVisitaDistribuidor, _
                                    SecuenciaVisitaPreventista, _
                                    HabilitadoCredito, _
                                    CodigoTipoCredito, _
                                    GpsLatitud, _
                                    GpsLongitud, _
                                    GpsAltura, _
                                    GpsDatum, _
                                    Comentarios, _
                                    UsuarioRegistroModificacion)
        End Sub
        Public Shared Function ListadoPDV(ByVal CodigoCD As String, ByVal Codigo As System.Nullable(Of Integer)) As DataTable

            Dim Comando As New CAD.PDV.PDV_SELECT(CAD.BaseDatos.Conexion)
            Dim Tabla As New DataTable

            Comando.LoadTable(Tabla, CodigoCD, Codigo)

            Return Tabla

        End Function
        Public Shared Function ListadoPDVsInactivosNuevos(ByVal CodigoCD As String, ByVal fecha As Date) As DataTable

            Dim Comando As New CAD.PDV.PDV_InactivoNuevo_SELECT(CAD.BaseDatos.Conexion)
            Dim Tabla As New DataTable

            Comando.LoadTable(Tabla, CodigoCD, fecha)

            Return Tabla

        End Function
        Public Shared Function GetPDV(ByVal CodigoCD As String, ByVal Codigo As Integer) As PDV

            Dim Comando As New CAD.PDV.PDV_SELECT(CAD.BaseDatos.Conexion)
            Dim Tabla As New DataTable
            Dim miPDV As New CNG.PDV
            Dim fila As DataRow
            Comando.LoadTable(Tabla, CodigoCD, Codigo)

            If Tabla.Rows.Count > 0 Then

                fila = Tabla.Rows(0)

                miPDV.CodigoCD = fila.Item("CodigoCD")
                miPDV.Codigo = fila.Item("Codigo")
                miPDV.Activo = fila.Item("Activo")
                miPDV.CodigoTipoPDV = fila.Item("CodigoTipoPDV")
                miPDV.Zona = fila.Item("Zona")
                miPDV.Ruta = fila.Item("Ruta")
                miPDV.IVS = fila.Item("IVS")
                miPDV.NombrePropietario = fila.Item("NombrePropietario")
                miPDV.CiPropietario = fila.Item("CiPropietario")
                miPDV.CodigoTipoCiExpedidoPropietario = fila.Item("CodigoTipoCiExpedidoPropietario")
                miPDV.FechaNacimientoPropietario = fila.Item("FechaNacimientoPropietario")
                miPDV.CodigoTipoEstadoCivilPropietario = fila.Item("CodigoTipoEstadoCivilPropietario")
                miPDV.TelefonoPropietario = fila.Item("TelefonoPropietario")
                miPDV.DireccionPropietario = fila.Item("DireccionPropietario")
                miPDV.ReferenciaDireccionPropietario = fila.Item("ReferenciaDireccionPropietario")
                miPDV.CodigoTipoRelacionPropietarioVendedor = fila.Item("CodigoTipoRelacionPropietarioVendedor")
                miPDV.NombreVendedorHabitual = fila.Item("NombreVendedorHabitual")
                miPDV.NombreComercial = fila.Item("NombreComercial")
                miPDV.NitComercial = fila.Item("NitComercial")
                miPDV.NombreFacturacion = fila.Item("NombreFacturacion")
                miPDV.NitFacturacion = fila.Item("NitFacturacion")
                miPDV.CodigoTipoEstadoPropiedadLocal = fila.Item("CodigoTipoEstadoPropiedadLocal")
                miPDV.CodigoTipoNegocio = fila.Item("CodigoTipoNegocio")
                miPDV.FechaInicioTrabajoEmpresa = fila.Item("FechaInicioTrabajoEmpresa")
                miPDV.TelefonoComercial = fila.Item("TelefonoComercial")
                miPDV.DireccionComercial = fila.Item("DireccionComercial")
                miPDV.ReferenciaDireccionComercial = fila.Item("ReferenciaDireccionComercial")
                miPDV.SecuenciaVisitaDistribuidor = fila.Item("SecuenciaVisitaDistribuidor")
                miPDV.SecuenciaVisitaPreventista = fila.Item("SecuenciaVisitaPreventista")
                miPDV.HabilitadoCredito = fila.Item("HabilitadoCredito")
                miPDV.CodigoTipoCredito = fila.Item("CodigoTipoCredito")
                miPDV.GpsLatitud = fila.Item("GpsLatitud")
                miPDV.GpsLongitud = fila.Item("GpsLongitud")
                miPDV.GpsAltura = fila.Item("GpsAltura")
                miPDV.GpsDatum = fila.Item("GpsDatum")
                miPDV.Comentarios = fila.Item("Comentarios")
                miPDV.FechaRegistroInsercion = fila.Item("FechaRegistroInsercion")
                miPDV.FechaRegistroModificacion = fila.Item("FechaRegistroModificacion")
                miPDV.UsuarioRegistroInsercion = fila.Item("UsuarioRegistroInsercion")
                miPDV.UsuarioRegistroModificacion = fila.Item("UsuarioRegistroModificacion")

                Return miPDV

            Else
                Return Nothing
            End If

        End Function
        Public Shared Function EsPDVDesactivable(ByVal CodigoCD As String, ByVal Codigo As Integer) As Boolean

            Dim Comando As New CAD.Util.ReporteDesactivacionPDV(CAD.BaseDatos.Conexion)
            Dim Tabla As New DataTable

            Comando.Command.CommandTimeout = 0
            Comando.LoadTable(Tabla, CodigoCD, Codigo)

            Return Convert.ToBoolean((Tabla.Rows(0).Item("Habilitado")))

        End Function
    
    End Class

End Namespace
